﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DataManager.DAL.SQL
{
    public class AlkalmazottakMsSqlDAO : AlkalmazottakDAO
    {
        public MsSqlUtils utils;

        public AlkalmazottakMsSqlDAO(MsSqlUtils utils)
        {
            this.utils = utils;
        }

        public bool bejelentkezes(string FelhasznaloNev, string Jelszo, int Admine)
        {
            string sqlCommand =
                "SELECT A.FelhasznaloNev, A.Admine " +
                "FROM Alkalmazottak A " +
                "WHERE A.FelhasznaloNev = '" + FelhasznaloNev + "' AND " +
                "A.Jelszo = '" + Jelszo + "' AND " +
                "A.Admine = " + Admine;
            DataSet d = utils.FillDataSetFromQuery(sqlCommand);
            return (d.Tables[0].Rows.Count == 1);
        }

        public DataSet getAlkalmazottIdByName(string FelhasznaloNev)
        {
            string sqlCommand =
                "SELECT AlkalmazottId " +
                "FROM Alkalmazottak " +
                "WHERE FelhasznaloNev ='" + FelhasznaloNev + "'";
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getAlkalmazottInfoByName(string nev)
        {
            string sqlCommand =
                "SELECT AlkalmazottId,AlkalmazottNev,Cim,Fizetes,FelhasznaloNev " +
                "FROM Alkalmazottak ";
            if (nev!="")
            {
                sqlCommand = sqlCommand + "WHERE AlkalmazottNev Like '%" + nev + "%'";
            }
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getAlkalmazottInfoById(int id)
        {
            string sqlCommand =
                "SELECT AlkalmazottId,AlkalmazottNev,Cim,Fizetes " +
                "FROM Alkalmazottak " +
                "WHERE AlkalmazottId = " + id;
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getAlkalmazottAllInfoById(int id)
        {
            string sqlCommand =
                "SELECT AlkalmazottNev,Cim,Fizetes,FelhasznaloNev,Jelszo " +
                "FROM Alkalmazottak " +
                "WHERE AlkalmazottId = " + id;
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public void ujAlkalmazott(string nev, string cim, int fizetes, string felh, string jelszo)
        {
            SqlParameter p1 = new SqlParameter("@nev", SqlDbType.VarChar, 30);
            p1.Value = nev;
            SqlParameter p2 = new SqlParameter("@cim", SqlDbType.VarChar, 30);
            p2.Value = cim;
            SqlParameter p3 = new SqlParameter("@fizetes", SqlDbType.Int);
            p3.Value = fizetes;
            SqlParameter p4 = new SqlParameter("@felh", SqlDbType.VarChar, 15);
            p4.Value = felh;
            SqlParameter p5 = new SqlParameter("@jelszo", SqlDbType.VarChar, 10);
            p5.Value = jelszo;

            utils.ExecuteStoredProcedure("UjAlkalmazott",p1,p2,p3,p4,p5);
        }

        public DataSet getAlkalmazottMitDolgozott(int id)
        {
            string sqlCommand =
                "SELECT DISTINCT SzamlaFejek.Datum,SzamlaFejek.SzamlaErtek,Vasarlok.Nev " +
                "FROM Vasarlok,Vasarlasok,SzamlaFejek " +
                "WHERE SzamlaFejek.VasarloId = Vasarlok.VasarloId " +
                "AND Vasarlasok.EladoId = " + id;
     
            return utils.FillDataSetFromQuery(sqlCommand);
        }
		
        public void modosit(int id, string nev, string cim, int fizetes, string felh, string jelszo)
        {
            SqlParameter p0 = new SqlParameter("@id", SqlDbType.Int);
            p0.Value = id;
            SqlParameter p1 = new SqlParameter("@nev", SqlDbType.VarChar, 30);
            p1.Value = nev;
            SqlParameter p2 = new SqlParameter("@cim", SqlDbType.VarChar, 30);
            p2.Value = cim;
            SqlParameter p3 = new SqlParameter("@fizetes", SqlDbType.Int);
            p3.Value = fizetes;
            SqlParameter p4 = new SqlParameter("@felh", SqlDbType.VarChar, 15);
            p4.Value = felh;
            SqlParameter p5 = new SqlParameter("@jelszo", SqlDbType.VarChar, 10);
            p5.Value = jelszo;

            utils.ExecuteStoredProcedure("AlkalmazottModosit", p0, p1, p2, p3, p4, p5);
        }

        public void modositOptimistan(int id, string nev, string cim, int fizetes, string felh, string jelszo, string rnev, string rcim, int rfizetes, string rfelh, string rjelszo)
        {
            String sqlCommand = "update Alkalmazottak set AlkalmazottNev = '" + nev +
                        "', Cim = '" + cim +
                        "', Fizetes = " + fizetes +
                        ", FelhasznaloNev = '" + felh +
                        "', Jelszo = '" + jelszo +
                        "' where AlkalmazottId = " + id +
                        " AND AlkalmazottNev = '" + rnev +
                        "' AND Cim = '" + rcim +
                        "' AND Fizetes = " + rfizetes +
                        " AND FelhasznaloNev = '" + rfelh +
                        "' AND Jelszo = '" + rjelszo + "'";
            utils.ExecuteCommand(sqlCommand);
        }

		public void torolAlkalmazott(int id)
        {
            String sqlCommand = "DELETE FROM Alkalmazottak WHERE AlkalmazottId = " + id;
            utils.ExecuteCommand(sqlCommand);
        }
    }
}
